package code

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

var Default = &response{}

// Error 失败数据处理
func Error(c *gin.Context, code int, err error, msg string) {
	res := Default.Clone()
	res.SetMsg(msg)
	if err != nil {
		res.SetMsg(err.Error())
	}
	if msg != "" {
		res.SetMsg(msg)
	}
	res.SetCode(int32(code))
	// 写入上下文
	c.Set("result", res)
	// 返回结果集
	c.AbortWithStatusJSON(http.StatusOK, res)
}
func ErrorWithError(c *gin.Context, code int, err error) {
	res := Default.Clone()
	if err != nil {
		res.SetMsg(err.Error())
	}
	res.SetCode(int32(code))
	// 写入上下文
	c.Set("result", res)
	// 返回结果集
	c.AbortWithStatusJSON(http.StatusOK, res)
}

func ErrorWithMsg(c *gin.Context, code int, msg string) {
	Error(c, code, nil, msg)
}

// OK 通常成功数据处理
func OK(c *gin.Context, data any, msg string) {
	res := Default.Clone()
	res.SetData(data)
	if msg != "" {
		res.SetMsg(msg)
	}
	res.SetCode(http.StatusOK)
	// 记录日志
	// 写入上下文
	c.Set("result", res)
	c.AbortWithStatusJSON(http.StatusOK, res)
}

// OKWithData 通常成功数据处理
func OKWithData(c *gin.Context, data any) {
	OK(c, data, "")
}
